home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 4 / Amiga Tools 4.iso / tools / netzwerk / magplip / source / magplip.i < prev    next >
Text File  |  1996-02-26  |  5KB  |  199 lines

  1.    IFND    MAGPLIP_I
  2. MAGPLIP_I     SET     1
  3.  
  4. ;
  5. ;  $VER: magplip.i 1.6 (30 Dec 1995)
  6. ;
  7. ;  magplip.device - Parallel Line Internet Protocol
  8. ;
  9. ;  Original code written by Oliver Wagner and Michael Balzer.
  10. ;
  11. ;  This version has been completely reworked by Marius Gröger, introducing
  12. ;  slight protocol changes. The new source is a lot better organized and
  13. ;  maintainable.
  14. ;
  15. ;  Additional changes and code cleanup by Jan Kratochvil and Martin Mares.
  16. ;  The new source is significantly faster and yet better maintainable.
  17. ;
  18. ;  (C) Copyright 1993-1994 Oliver Wagner & Michael Balzer
  19. ;  (C) Copyright 1995 Jan Kratochvil & Martin Mares
  20. ;  (C) Copyright 1995 Marius Gröger
  21. ;      All Rights Reserved
  22. ;
  23. ;  $HISTORY:
  24. ;
  25. ;  30 Dec 1995 : 001.006 :  single dynamic frame buffer
  26. ;  29 Dec 1995 : 001.005 :  + pb_Startup
  27. ;                        :  + new flag PLIPF_REPLYSS
  28. ;  03 Sep 1995 : 001.004 :  + removed PLIP(F|B)_SIDEA
  29. ;                           + hardware addressing fields in PLIPBase
  30. ;  30 Aug 1995 : 001.003 :  changed to match magplip.h
  31. ;  20 Aug 1995 : 001.002 :  + ASM parts really don't need to know about the
  32. ;                             configuration defaults.
  33. ;                           + using BITDEF macro from exec/types.i
  34. ;  13 Aug 1995 : 001.001 :  code cleanup
  35. ;  12 Feb 1995 : 001.000 :  created
  36. ;
  37.  
  38.  
  39.     IFND EXEC_TYPES_I
  40.     INCLUDE "exec/types.i"
  41.     ENDC
  42.  
  43.     IFND EXEC_LISTS_I
  44.     INCLUDE "exec/lists.i"
  45.     ENDC
  46.  
  47.     IFND EXEC_INTERRUPTS_I
  48.     INCLUDE "exec/interrupts.i"
  49.     ENDC
  50.  
  51.     IFND EXEC_LIBRARIES_I
  52.     INCLUDE "exec/libraries.i"
  53.     ENDC
  54.  
  55.     IFND EXEC_SEMAPHORES_I
  56.     INCLUDE "exec/semaphores.i"
  57.     ENDC
  58.  
  59.     IFND DEVICES_TIMER_I
  60.     INCLUDE "devices/timer.i"
  61.     ENDC
  62.  
  63.     IFND DEVICES_SANA2_I
  64.     INCLUDE "devices/sana2.i"
  65.     ENDC
  66.  
  67.     IFND DOS_DOS_I
  68.     INCLUDE "dos/dos.i"
  69.     ENDC
  70.  
  71. ;****************************************************************************
  72.  
  73. PLIP_MAXMTU         equ 8192
  74. PLIP_ADDRFIELDSIZE  equ 1
  75.  
  76. ;****************************************************************************
  77.  
  78.    ; Each data packet is put into this kind of frame before sent over the
  79.    ; line. See below for definitions.
  80.    ;
  81.    STRUCTURE PLIPFrame,0
  82.      USHORT   pf_Sync
  83.      SHORT    pf_Size
  84.      USHORT   pf_CRC
  85.      ULONG    pf_Type
  86. ;*** UBYTE    pf_Data[MTU];
  87.      LABEL PLIPFrame_SIZE
  88.  
  89. PKTFRAMESIZE_1   equ     4
  90. PKTFRAMESIZE_2   equ     6
  91.  
  92. SYNCBYTE_HEAD    equ     $42
  93. SYNCBYTE_CRC     equ     $01
  94. SYNCBYTE_NOCRC   equ     $02
  95. SYNCWORD_CRC     equ     ((SYNCBYTE_HEAD<<8)|SYNCBYTE_CRC)
  96. SYNCWORD_NOCRC   equ     ((SYNCBYTE_HEAD<<8)|SYNCBYTE_NOCRC)
  97.  
  98.  
  99. ;****************************************************************************
  100.  
  101.  
  102.    ;
  103.    ; Central driver static storage. See Flags bits below.
  104.    ;
  105.    STRUCTURE PLIPBase,LIB_SIZE
  106.      UBYTE  pb_Unit
  107.      UBYTE  pb_pad1
  108.      BPTR   pb_SegList
  109.      APTR   pb_MiscBase
  110.      APTR   pb_CIAABase
  111.      APTR   pb_UtilityBase
  112.      APTR   pb_TimerBase
  113.      APTR   pb_DOSBase
  114.      APTR   pb_SysBase
  115.      APTR   pb_Startup
  116.      APTR   pb_Server
  117.      APTR   pb_Task
  118.      STRUCT pb_Interrupt,IS_SIZE
  119.      ULONG  pb_IntSig
  120.      ULONG  pb_IntSigMask
  121.      ULONG  pb_ServerStoppedSigMask
  122.      APTR   pb_ServerPort
  123.      APTR   pb_TimeoutPort
  124.      APTR   pb_CollPort
  125.      STRUCT pb_TimeoutReq,IOTV_SIZE
  126.      STRUCT pb_CollReq,IOTV_SIZE
  127.      STRUCT pb_DevStats,S2DS_SIZE
  128.      STRUCT pb_ReadList,LH_SIZE
  129.      STRUCT pb_WriteList,LH_SIZE
  130.      STRUCT pb_EventList,LH_SIZE
  131.      STRUCT pb_ReadOrphanList,LH_SIZE
  132.      STRUCT pb_TrackList,LH_SIZE
  133.      STRUCT pb_BufferManagement,LH_SIZE
  134.      STRUCT pb_EventListSem,SS_SIZE
  135.      STRUCT pb_ReadListSem,SS_SIZE
  136.      STRUCT pb_WriteListSem,SS_SIZE
  137.      STRUCT pb_TrackListSem,SS_SIZE
  138.      STRUCT pb_ReadOrphanListSem,SS_SIZE
  139.      STRUCT pb_Lock,SS_SIZE
  140.      ULONG  pb_Retries
  141.      ULONG  pb_ReportBPS
  142.      ULONG  pb_MTU
  143.      ULONG  pb_AllocFlags
  144.      ULONG  pb_Timeout;
  145.      LONG   pb_CollisionDelay
  146.      LONG   pb_ArbitrationDelay
  147.      UBYTE  pb_TimeoutSet
  148.      UBYTE  pb_Flags
  149.      APTR   pb_OldExceptCode
  150.      APTR   pb_OldExceptData
  151.      ULONG  pb_OldExcept
  152.      STRUCT pb_HandshakeMask,2              ; must be changed when
  153.      STRUCT pb_HandshakeBit,2               ; changing the datatype in .h
  154.      STRUCT pb_SrcAddr,PLIP_ADDRFIELDSIZE
  155.      STRUCT pb_DstAddr,PLIP_ADDRFIELDSIZE
  156.      APTR   pb_Frame
  157.    LABEL PLIPBase_SIZE
  158.  
  159. ;
  160. ; Bits for PLIPBase->pb_Flags
  161. ;
  162.    BITDEF PLIP,EXCLUSIVE,1
  163.    BITDEF PLIP,NOTCONFIGURED,2
  164.    BITDEF PLIP,OFFLINE,3
  165.    BITDEF PLIP,SENDCRC,4
  166.    BITDEF PLIP,RECEIVING,5
  167.    BITDEF PLIP,COLLISION,6
  168.    BITDEF PLIP,SERVERSTOPPED,7
  169.    BITDEF PLIP,REPLYSS,8
  170.  
  171.    ;
  172.    ; Index for PLIPBase->pb_HandshakeBit[]
  173.    ; Note: in contrast to the C-Version, this is actually not the index
  174.    ; but the offset in the array _in_bytes_. Therefore, if you change the
  175.    ; array's datatype, you need to adjust this.
  176.    ;
  177. HS_LINE    equ 0
  178. HS_REQUEST equ 1  ; better: 1*sizeof(UBYTE)
  179.  
  180.  
  181. ;****************************************************************************
  182.  
  183.    ;
  184.    ; Why isn't this in exec/types.i ?
  185.    ;
  186.  
  187.    IFND TRUE
  188. TRUE  equ 1
  189.    ENDC
  190.    IFND FALSE
  191. FALSE equ 0
  192.    ENDC
  193.  
  194.  
  195. ;****************************************************************************
  196.  
  197.  
  198.    ENDC MAGPLIP_I
  199.